.text
.align 2
.globl main
.type main, @function
main:
    addi sp, sp, -32
    sd ra, 24(sp)
    sd s0, 16(sp)

    li a5, 5
    // times
    sw a5, -20(s0)
    li a5, 33
    // ch
    sb a5, -21(s0)

    lui a5, %hi(.LC0)
    flw fa5, %lo(.LC0)(a5)
    // f
    fsw fa5, -28(s0)

    ld a0, -20(s0) /* times */
    call pound

    lbu a0, -21(s0) /* ch */
    sext.w a0, a0
    call pound

    /*
    // f
    flw fa5, -28(s0)
    fcvt.w.s a5, fa5, rtz
    sext.w a5, a5
    mv a0, a5
    call pound
    */

    // 以下是函数声明时生成的代码，由此可见函数声明时，参数是放在fa0的
    // 而pound是从a0取参数，所以只能取到一个随机值
    flw fa5, -28(s0)
    fcvt.d.s fa5, fa5
    fmv.d fa0, fa5
    call pound

    li a0, 0
    ld s0, 16(sp)
    ld ra, 24(sp)
    addi sp, sp, 32
    jr ra

pound:
    addi sp, sp, -32
    sd ra, 24(sp)
    sd s0, 16(sp)
    addi s0, sp, 32

    // 参数n
    mv a5, a0
    sw a5, -20(s0)
    j .L4
.L5:
    li a0, 35
    call putchar
.L4:
    lw a5, -20(s0)
    addiw a4, a5, -1
    sw a4, -20(s0)
    bgt a5, zero, .L5

    li a0, 10
    call putchar

    ld s0, 16(sp)
    ld ra, 24(sp)
    addi sp, sp, 32
    jr ra

.LC0:
    .word 1086324736